# -*- coding: utf-8 -*-
import os
import sys
import gtk
import gtk.glade
from ConfigParser import *
from Dialogs import *

from KiduxConfig import *


class KiduxGladeDialog(Dialogs):
    '''Gui class for Kidux Plugin'''
    def __init__(self):
	self.config()
	self.plugindir = os.path.realpath(os.path.curdir)+"/plugins_base"
	self.gladefile = self.plugindir+"/kidux/KiduxPlugin.glade"

        self.wTree = gtk.glade.XML(self.gladefile)
        self.DlgConfirmContat = self.wTree.get_widget('DlgConfirmContat')
        self.btnConfirmSim = self.wTree.get_widget('btnConfirmSim')
        self.btnConfirmNao = self.wTree.get_widget('btnConfirmNao')
        self.labelConfirm = self.wTree.get_widget('labelConfirm')
        self.labelBlocked = self.wTree.get_widget('labelBlocked')
        self.DlgBlocked = self.wTree.get_widget('DlgBlocked')

        events = {"on_btnConfirmNao_clicked" : self.closeDlgConfirmContact,
                        "on_btnConfirmSim_clicked" : self.requestAuth,
                        "on_BtnBlocked_clicked" : self.closeDlgBlocked}

        self.wTree.signal_autoconnect(events)
            # GTK STOP
        self.target = ""

    def config(self):
	self.kiduxConfig = KiduxConfig()
	imageName = "tux.png"
	self._imagePath = self.kiduxConfig.image(imageName)


    def closeDlgConfirmContact(self,  btn):
        '''Generic Closing dialog functions'''
        self.DlgConfirmContat.hide()

    def requestAuth(self, btn):
        '''Requesting permitions to parental control class'''
        #TODO: insert requesting functions here
        self.DlgConfirmContat.hide()

    def closeDlgBlocked(self,  btn):
        '''Another generic closing dialog function'''
        self.DlgBlocked.hide()

    def showConversationBlockedDialog(self, target):
        '''Shows Blocked Conversation Dialog'''
        self.DlgBlocked.show()
        
    def showConversationAuthorizationDialog(self, target):
        '''Show Dialog for requesting conversation permision to parental Control'''
        self.target = target
        self.labelConfirm.set_text("Seu pai ainda não auturizou sua \nconversa com "+target+".\nDeseja Pedir autorização?")
        self.DlgConfirmContat.show()
    
    def showPendentDialog(self, target):
        '''Show Information about contacts in Pendent list'''
        self.labelBlocked.set_text(target+" já está pendente para seu \npai liberar. Aguarde")
        self.DlgBlocked.show()

    def AddingContactDialog(self,  target):
        '''Requestin Add Contact'''
        self.labelBlocked.set_text(target+" foi enviado para seu pai liberar.\n Aguarde a  liberação.")
        self.DlgBlocked.show()
    
    def unblockPreventDialog(self,  target):
        self.labelBlocked.set_text(target+" está pendente ou bloqueado.\nVocê não está autorizado a desbloquear estes contatos")
        self.DlgBlocked.show()
    
    def setAliasPreventDialog(self,  target):
        self.labelBlocked.set_text(target+" está pendente ou bloqueado.\nVocê não está autorizado a alterar apelidos destes contatos")
        self.DlgBlocked.show()
    
    def fileTransferPreventDialog(self,  target):
        self.labelBlocked.set_text("Você não pode trocar\n arquivos com "+target)
        self.DlgBlocked.show()
    
    def emailPreventDialog(self,  target):
        self.labelBlocked.set_text("Você não pode trocar\n e-mails com "+target)
        self.DlgBlocked.show()
    
    def preventLogin(self,  account):
        self.labelBlocked.set_text("Você não pode acessar msn\n usando a conta "+account)
        self.DlgBlocked.show()
        
    def getPix(self):
        # Criar links simbolicos da imagem tux.png
        imagePath = self._imagePath
        pixbuf = gtk.gdk.pixbuf_new_from_file(imagePath)
        width = 96
        height = 96
        icon = self.resizePixbuf(pixbuf, width, height)
        return icon

    def resizePixbuf(self,  pixbuf, height, width):
        pWidth, pHeight = pixbuf.get_width(), pixbuf.get_height()
        if pWidth == width and pHeight == height:
            return pixbuf
        destX = destY = 0
        destWidth, destHeight = width, height
        if pWidth > pHeight:
            scale = float(width) / pWidth
            destHeight = int(scale * pHeight)
            destY = int((height - scale * pHeight) / 2)
        elif pHeight > pWidth:
            scale = float(height) / pHeight
            destWidth = int(scale * pWidth)
            destX = int((width - scale * pWidth) / 2)
        else:
            return pixbuf.scale_simple(width, height, gtk.gdk.INTERP_BILINEAR)
        if scale == 1:
            return pixbuf
        scaled = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, width, height)
        pixbuf.scale(scaled, 0, 0, width, height, \
                        destX, destY, scale, scale, \
                        gtk.gdk.INTERP_BILINEAR)
        return scaled
